import 'package:plugin_platform_interface/plugin_platform_interface.dart';
import 'package:starkylin_file_shared/type/type.dart';

// import 'starkylin_file_shared_method_channel.dart';

abstract class StarkylinFileSharedPlatform extends PlatformInterface {
  /// Constructs a StarkylinFileSharedPlatform.
  StarkylinFileSharedPlatform() : super(token: _token);

  static final Object _token = Object();

  static set instance(StarkylinFileSharedPlatform instance) {
    PlatformInterface.verifyToken(instance, _token);
    // _instance = instance;
  }

  Future<void> selectDir() {
    throw UnimplementedError('selectDir() has not been implemented.');
  }

  Future<void> selectFile() {
    throw UnimplementedError('selectFile() has not been implemented.');
  }

  void addMessageListener(ClientMsgCallback cb) {
    throw UnimplementedError('addMessageListener() has not been implemented.');
  }

  void removeMessageListener(ClientMsgCallback cb) {
    throw UnimplementedError('removeMessageListener() has not been implemented.');
  }
  
  Future<void> download(MsgPack url, {String? saveDir}) async {
    throw UnimplementedError('downloadFile() has not been implemented.');
  }
}
